﻿using EGuayas.Web.Resources;
using EntGuayasSLA.BL;
using EntGuayasSLA.BL.Listas;
using Ext.Net;
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

namespace EGuayas.Web.Usuario
{
    public partial class wucDocUser : ucWuc
    {
        #region Set-Session
        protected String IdPageSession
        {
            get
            {
            
                return ReadCustomConfigPage(this.pnlDocUser, this.ID);
            }

        }
        /// <summary>
        /// Lista de docuemntos asociados a un persona
        /// </summary>
        protected ArchivoLista ListaDocLectura
        {
            get
            {
                if (Session[SessionPage.PageUserAct + "_pgPromotorLista2"] == null)
                {
                    Session[SessionPage.PageUserAct + "_pgPromotorLista2"] = new ArchivoLista();
                }
                return ((ArchivoLista)Session[SessionPage.PageUserAct + "_pgPromotorLista2"]);
            }
            set
            {
                Session[SessionPage.PageUserAct + "_pgPromotorLista2"] = value;
            }
        }
        /// <summary>
        /// Id de persona creada y/o modificada
        /// pgPromotorPersonaIdTmp
        /// </summary>
        protected string PersonaIdTmp
        {
            get
            {

                return ReadCustomConfig(this.pnlDocUser, this.ID, "idPers");
            }

        }
        /// <summary>
        /// Lista de documentos de delegado
        /// </summary>
        protected ItemLista ListaDocDelegado
        {
            get
            {
                if (Session[SessionPage.PageUserAdm + "_pgPromotorLista3"] == null)
                {
                    Session[SessionPage.PageUserAdm + "_pgPromotorLista3"] = new ItemLista();
                }
                return ((ItemLista)Session[SessionPage.PageUserAdm + "_pgPromotorLista3"]);
            }
            set
            {
                Session[SessionPage.PageUserAdm + "_pgPromotorLista3"] = value;

            }
        }
        /// <summary>
        /// Lista de documetos iniciales de promotor
        /// </summary>
        protected ItemLista ListaDoc
        {
            get
            {
                if (Session[SessionPage.PageUserAdm + "_pgPromotorLista1"] == null)
                {
                    Session[SessionPage.PageUserAdm + "_pgPromotorLista1"] = new ItemLista();
                }
                return ((ItemLista)Session[SessionPage.PageUserAdm + "_pgPromotorLista1"]);
            }
            set
            {
                Session[SessionPage.PageUserAdm + "_pgPromotorLista1"] = value;
            }
        }
       #endregion Set-Session
       
       
        /// <summary>
        /// Numero de documentos por validar
        /// </summary>
        protected int CountNumLoadDoc
        {
            get
            {
                //return (int.Parse(Session["pgPromotorLoadNumDoc"].ToString()));
                return (int.Parse(numDoc.Text));
            }
            set
            {

                numDoc.Text = value.ToString();
                //Session["pgPromotorLoadNumDoc"] = value;
            }
        }
       
      
      
        protected void Page_Load(object sender, EventArgs e)
        {
            try
            {
            if (!X.IsAjaxRequest)
            { 
                    string idPromotor = Request["idx1"];
                    string idUsuario  = Request["idx2"];

                    if (idUsuario == null)
                    {
                        if (IdPageSession != SessionPage.PageUserReg)
                            idUsuario = GetSessionUsuario.UsuarioId;
                        
                    }
                    if (idPromotor != null & idUsuario != null)
                    {
                        if (GetSessionUsuario.UsuarioRolCodigo == Valores.Codigo_Rol_Promotor)
                        {
                            int intTmp = 0;
                        
                            ListaDocLectura = ArchivoLista.GetArchivoLista(PersonaIdTmp, out intTmp);//Inicializar para validar cuantos se debe validar
                            CountNumLoadDoc = 0;
                            ExtNet.Js.Call("AppUser.DocumentosGrid.CreateIdsNew", ListaDocLectura);//Ejecutar en Load ya que borra los que se debe subir nuevamente
                            numDoc.SetMinValue(intTmp);
                            numDoc.SetMaxValue(intTmp);
                        }
                        BindDataDocumentos(PersonaIdTmp);
                    }
                    switch (GetSessionPage.GetSession(IdPageSession))
                    {
                        case Valores.PageEvento_Eliminar:
                            this.hddEvento.SetValue(Valores.PageEvento_Eliminar);
                            this.frmSettings.Show();                          
                            break;

                        case Valores.PageEvento_Lectura:
                            this.hddEvento.SetValue(Valores.PageEvento_Lectura);
                            this.frmSettings.Show();                         
                            break;
                        case Valores.PageEvento_Modificar:
                            this.hddEvento.SetValue(Valores.PageEvento_Modificar);
                            this.frmSettings.Hide();                          
                            break;
                        default:
                            this.hddEvento.SetValue(Valores.PageEvento_Nuevo);
                            this.frmSettings.Show();                         
                            break;

                    }
                    //Inicializar datos de delegado
                    ItemLista itemNew = ListaDocDelegado;
                    if (itemNew.Count() == 0)
                    {
                        ListaDocDelegado = ItemLista.GetItemListaCodigo(Valores.Catalogo_Cod_Delegado, "S");
                    }
            }
            }
            catch (Exception ex)
            {
                RegistrarLog(ex);
            }
        }
        /// <summary>
        /// Actualizar estado de documento
        /// </summary>
        /// <param name="_id"></param>
        /// <param name="_estado"></param>
        /// <returns></returns>
        [DirectMethod(IDAlias = "wucDocUser",ShowMask = true)]
        public Boolean UpdateEstado(string _id, string _estado)
        {
            try
            {
            Guid Id = Guid.Parse(_id);
            string SubirNuevo = _estado;

            Archivo objArch = Archivo.GetEditableRoot(Id, Valores.Modulo_Archivo_Promotor);
            objArch.SubirNuevo = (SubirNuevo == "N") ? "S" : "N";
            objArch.Save();
            BindDataDocumentos(PersonaIdTmp);
            }
            catch (Exception ex)
            {
                RegistrarLog(ex);
            }
            return (true);
        }
        
        //public void setNumDoc(string val)
        //{
        //    numDoc.Text = val;
        //}
        
        /// <summary>
        /// Vizualiza datos de delegado
        /// </summary>
        /// <param name="viewItems">{Booleno}Determina si se debe agregar o quitar documentos referentes a delegado y existentes</param>
        /// <returns></returns>
        [DirectMethod(IDAlias = "wucDocUser")]
        public Boolean BindDataDocDelegado(Boolean viewItems)
        {
            try
            {
            switch (GetSessionPage.GetSession(IdPageSession))
            {
                case Valores.PageEvento_Nuevo:

                    if (viewItems == true)
                    {
                        if (ListaDoc.Count() == 0)
                        {
                            stoDocRequerimiento.DataSource = ListaDocDelegado;
                            stoDocRequerimiento.DataBind();
                            ListaDoc = ListaDocDelegado;//Primera interación, seleción delegado
                        }
                        else
                        {
                            ItemLista itemNew_1 = ListaDoc;
                            DeleteAllFiles(ListaDocDelegado);
                            if (itemNew_1 == null)
                                itemNew_1 = new ItemLista();
                            itemNew_1.CopyTo(ListaDocDelegado, 0);
                            ListaDoc = itemNew_1;
                            bindDataNew();
                        }
                    }
                    else
                    {
                        if (ListaDoc.Count() != 0)
                        {
                            DeleteAllFiles(ListaDocDelegado);
                            ListaDoc.RemoveFromList(ListaDocDelegado);
                            bindDataNew();
                        }
                    
                    }
                    break;
            }
            }
            catch (Exception ex)
            {
                RegistrarLog(ex);
            }
           
            return (true);
        }
        [DirectMethod (IDAlias = "wucDocUser")]
        public Boolean BindDataDocumentos(string opc)
        {
            try
            {
                Session["RUCPROMOTOR"] = "";
                switch (GetSessionPage.GetSession(IdPageSession))
                {
                case Valores.PageEvento_Nuevo:
                    ItemLista itemNew_1 = ItemLista.GetItemListaCodigo(Valores.Catalogo_Cod_DocPromotor, opc);
                    if (this.hddDocumentoDelegado.Value.ToString() == "true")
                    {
                        itemNew_1.CopyTo(ListaDocDelegado,0);
                    }
                    ListaDoc =itemNew_1;
                    //Inicializar contador de documentos 
                    CountNumLoadDoc = 0;
                    //
                    bindDataNew();
                    break;
                case Valores.PageEvento_Eliminar:
                case Valores.PageEvento_Lectura:
                    if (opc.Length != 1)//Caso que se ejecute por evento
                    {
                        int nCount = 0;
                        ArchivoLista itemNew_2 = ArchivoLista.GetArchivoLista(opc, out nCount);
                        //if (this.hddDocumentoDelegado.Value.ToString() == "true")
                        //{
                        //    itemNew_2.CopyTo(ListaDocDelegado, 0);
                        //}

                        ListaDocLectura = itemNew_2;                     
                        
                        Store store = this.stoDocRequerimiento;

                        //if (store.Model.Count != 5)
                        {
                            Column columnAdd = null;
                            GridPanel grid = this.gpDocumentosLoad;
                            // Clear Collections to remove old Data and Models
                            store.Reader.Clear();
                            grid.SelectionModel.Clear();
                            grid.ColumnModel.Columns.Clear();
                            store.Model.Clear();

                            // Reconfigure Store
                            store.Model.Add(new Model
                            {
                                Fields = 
                            {
                                new ModelField("Id"),
                                new ModelField("Nombre"),
                                new ModelField("Descripcion"),
                                new ModelField("Ruta"),
                                new ModelField("SubirNuevo"),
                                new ModelField("Orden"),
                                new ModelField("ArchivoId"),
                                new ModelField("Comentarios")
                            }
                            });


                            // Reconfigure GridPanel
                            grid.SelectionModel.Add(new RowSelectionModel { Mode = SelectionMode.Single });
                            CommandColumn commandColumn = new CommandColumn();
                            commandColumn.ID = "colAction" + System.Guid.NewGuid();
                            commandColumn.Flex = 1;
                            //commandColumn.Text = "Visualizar";
                            commandColumn.DataIndex = "Id";
                            commandColumn.Commands.Add(new GridCommand { Icon = Ext.Net.Icon.Zoom, CommandName = "View", Text = "Vizualizar" });
                            commandColumn.Listeners.Command.Handler = "AppGlobalJs.showPdf('../../..',record.data.Ruta);";
                            Column commandColumnPromotor1 = new Column();
                            Column commandColumnPromotor2 = new Column();
                            ImageCommandColumn commandImageColumn = new ImageCommandColumn();
                            if (GetSessionUsuario.UsuarioRolCodigo == Valores.Codigo_Rol_Promotor)
                            {
                                /*
                                 FORMATO:
                                 <ext:Column ID="Column4"  runat="server">
                                      <Commands>
                                          <ext:ImageCommand CommandName="Attach" Icon="PageWhiteStack" Text="Nuevo">
                                              <ToolTip Text="Nueva Versión" />
                                          </ext:ImageCommand>
                                      </Commands>
                                      <PrepareCommand Fn="pgFn.PrepareCommand" />
                                      <Listeners>
                                              <Command Handler="pgFn.ShowWinAddDoc(true,record,recordIndex);" />
                                      </Listeners>
                                  </ext:Column> 
                                   <ext:Column ID="Column5"  runat="server">
                                      <Commands>
                                          <ext:ImageCommand CommandName="Delete" Icon="Cross" Text="Eliminar">
                                              <ToolTip Text="Eliminar" />
                                          </ext:ImageCommand>
                                      </Commands>
                                          <PrepareCommand Fn="pgFn.PrepareCommand" />
                                      <Listeners>                                                                   
                                              <Command Handler="pgFn.ShowWinDelDoc(record,recordIndex);" >
                                              </Command>
                                      </Listeners>   
                                  </ext:Column>
                      
                               */
                                ImageCommand imgCmdTmp3 = new ImageCommand();
                                imgCmdTmp3.CommandName = "CmdAttach";
                                imgCmdTmp3.Icon = Icon.PageCopy;
                                imgCmdTmp3.Text = "Modificar";
                                commandColumnPromotor1.ID = "cmdImgAction1" + System.Guid.NewGuid();
                                commandColumnPromotor1.Commands.Add(imgCmdTmp3);
                                commandColumnPromotor1.PrepareCommand.Fn = "AppUser.DocumentosGrid.PrepareCommandRevision";
                                commandColumnPromotor1.Listeners.Command.Handler = "wucDocPersonaFn._ShowWinAddDoc(#{winDocumento},#{FileUploadDocUp},#{forPanelDoc},#{btnDocUpDel},#{btnWinDocOk},#{txtNombre},#{txtDesp},true,record,recordIndex)";
                                ImageCommand imgCmdTmp4 = new ImageCommand();
                                imgCmdTmp4.CommandName = "CmdDelete";
                                imgCmdTmp4.Icon = Icon.PageDelete;
                                imgCmdTmp4.Text = "Eliminar";
                                commandColumnPromotor2.ID = "cmdImgAction1" + System.Guid.NewGuid();
                                commandColumnPromotor2.Commands.Add(imgCmdTmp4);
                                commandColumnPromotor2.PrepareCommand.Fn = "AppUser.DocumentosGrid.PrepareCommandRevision";
                                commandColumnPromotor2.Listeners.Command.Handler = "AppUser.DocumentosGrid.ShowWinDelDoc('wuc_documentos',#{FileUploadDocUp},record,recordIndex);";


                            }
                            else
                            {

                                if (GetSessionPage.GetSession(IdPageSession) != Valores.PageEvento_Eliminar)// Caso de setearse el usuario; para crear usuario nuevo
                                {
                                    commandImageColumn.ID = "cmdImgAction" + System.Guid.NewGuid();
                                    ImageCommand imgCmdTmp2 = new ImageCommand();
                                    imgCmdTmp2.CommandName = "CmdCancel";
                                    imgCmdTmp2.Icon = Icon.TableRefresh;
                                    imgCmdTmp2.Text = "Revizar";

                                    commandImageColumn.Commands.Add(imgCmdTmp2);

                                    commandImageColumn.Listeners.Command.Handler = "AppUser.DocumentosGrid.ImageCommandReconfigureGrid(record,#{plDocumento},#{forPanelComentario},#{rdgSiNo},#{winComentario});";
                                    commandImageColumn.PrepareCommand.Fn = "AppUser.DocumentosGrid.PrepareCommandReconfigureGrid";
                                    //Falta agregar columna de texto
                                    columnAdd = new Column
                                     {
                                         Text = "Revizar",
                                         DataIndex = "SubirNuevo"

                                     };
                                  columnAdd.Renderer.Fn="AppUser.DocumentosGrid.renderUpdateText";
                                }
                            }
                            grid.ColumnModel.Columns.Add(new Column
                            {
                                Text = "Nombre",
                                DataIndex = "Nombre",
                                Flex = 1
                            });
                            grid.ColumnModel.Columns.Add(new Column
                            {
                                Text = "Descripción",
                                DataIndex = "Descripcion"

                            });
                            grid.ColumnModel.Columns.Add(new Column
                            {
                                Text = "Comentarios",
                                DataIndex = "Comentarios",
                                Flex = 1

                            });
                            if (columnAdd != null)
                                grid.ColumnModel.Columns.Add(columnAdd);

                            if (commandColumnPromotor1.ID != null & commandColumnPromotor1.ID != "")
                                grid.ColumnModel.Columns.Add(commandColumnPromotor1);
                            if (commandColumnPromotor2.ID != null & commandColumnPromotor2.ID != "")
                                grid.ColumnModel.Columns.Add(commandColumnPromotor2);

                            if (commandImageColumn.ID != null & commandImageColumn.ID != "")
                                grid.ColumnModel.Columns.Add(commandImageColumn);

                            grid.ColumnModel.Columns.Add(commandColumn);

                            // **Make sure to call .Render() on the GridPanel
                            store.DataSource = ListaDocLectura;
                            store.DataBind();
                            grid.Render();
                        }


                        //else
                        //{
                        //    store.DataSource = ListaDocLectura;
                        //    store.DataBind();
                        //}
                        if (GetSessionPage.GetSession(IdPageSession)!=Valores.PageEvento_Eliminar)
                        X.Js.Call("AppUser.DocumentosGrid.ShowBtnsRevision", nCount);
                    }
                    break;

            }
            }
            catch (Exception ex)
            {
                RegistrarLog(ex);
            }
            return (true);
        }
        /// <summary>
        /// Asigna DataSource "ListaDoc" a store
        /// </summary>
        private void bindDataNew()
        {
            try
            {
            stoDocRequerimiento.DataSource = ListaDoc;
            stoDocRequerimiento.DataBind();
            
            //numDoc.Text = "0";
            if (ListaDoc.Count() != 0)
            {
                numDoc.SetMinValue(ListaDoc.Count());
                numDoc.SetMaxValue(ListaDoc.Count());
            }
            }
            catch (Exception ex)
            {
                RegistrarLog(ex);
            }
        }
        protected void btnComentario_Click(object sender, DirectEventArgs e)
        {
            try
            {
                Guid Id = Guid.Parse(e.ExtraParams["Id"]);
                string SubirNuevo = e.ExtraParams["Revizar"];

                Archivo objArch = Archivo.GetEditableRoot(Id, Valores.Modulo_Archivo_Promotor);
                objArch.SubirNuevo = SubirNuevo;
                objArch.Comentarios = e.ExtraParams["Comentarios"];
                objArch.Save();
                BindDataDocumentos(PersonaIdTmp);
            }
            catch (Exception ex)
            {
                RegistrarLog(ex);
            }

        }
        #region Actualizar store de grid de documentos segun informacion contenida
        private void UpdateRowClient(string id, int index, Archivo objArch)
        {
        try
        {
            if (ListaDoc.Count!=0)
            {

                UpdateRowClient(id, index, objArch, ListaDoc);
            }
            else
            {
                if (ListaDocLectura.Count != 0)
                    BindDataDocumentos(PersonaIdTmp);
            }
            }
            catch (Exception ex)
            {
                RegistrarLog(ex);
            }

        }
        /// <summary>
        /// Vizualizar item modificado
        /// </summary>
        /// <param name="id"></param>
        /// <param name="index"></param>
        /// <param name="objArch"></param>
        /// <param name="listaTmp"></param>
        private void UpdateRowClient(string id, int index, Archivo objArch, ItemLista listaTmp)
        {
            try
            {
            var dato = listaTmp.FirstOrDefault(r => r.Id == System.Guid.Parse(id));
            listaTmp.Remove(dato);
            //Actualizar Info en el cliente
            dato.Ruta = objArch.Ruta;
            dato.ArchivoId = objArch.Id.ToString();
            listaTmp.Insert(index - 1, dato);
            stoDocRequerimiento.DataSource = listaTmp;
            stoDocRequerimiento.DataBind();
            }
            catch (Exception ex)
            {
                RegistrarLog(ex);
            }
        }
        /// <summary>
        /// Vizualiza  datos de grid actualizada
        /// </summary>
        /// <param name="id"></param>
        /// <param name="index"></param>
        /// <param name="objArch"></param>
        /// <param name="listaTmp"></param>
        //private void UpdateRowClient(string id, int index, Archivo objArch, ArchivoLista listaTmp)
        //{
        //    BindDataDocumentos(PersonaIdTmp);
        //}
        #endregion
        /// <summary>
        /// Subir archivos
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected void UploadClick(object sender, DirectEventArgs e)
        {
            try
            {
                if (this.FileUploadDocUp.HasFile)
                {

                    //Boolean IfNewVer = Convert.ToBoolean(e.ExtraParams["hddnDocIfVer"]);
                    int version = 1;
                    int index = -1;
                    string fileExt = this.FileUploadDocUp.PostedFile.FileName.Substring(this.FileUploadDocUp.PostedFile.FileName.LastIndexOf('.') + 1);
                    string ruta = "";
                    string fileName = "";
                    Int32.TryParse(e.ExtraParams["Index"], out index);

                    //Int32.TryParse(e.ExtraParams["hddnDocUpVers"], out version);
                    do
                    {
                        Random r = new Random(DateTime.Now.Millisecond);
                        ruta = string.Format("~/{0}/{1}{2}", System.Configuration.ConfigurationManager.AppSettings.Get("PathFiles"), r.Next(100, 999).ToString(), this.FileUploadDocUp.PostedFile.FileName);
                        fileName = MapPath(ruta).Trim();

                    } while (File.Exists(fileName));


                    this.FileUploadDocUp.PostedFile.SaveAs(fileName);


                    string tpl = Mensajes.MensajeArchivoCorrecto;

                    Archivo objArch;
                    //Evento cuando se modifica un archivo existente
                    if (GetSessionPage.GetSession(IdPageSession) == Valores.PageEvento_Lectura)
                    {
                        objArch = Archivo.GetEditableRoot(Guid.Parse(e.ExtraParams["Id"]), Valores.Modulo_Archivo_Promotor);
                        objArch.SubirNuevo = "C";
                        objArch.Ruta = ruta;
                        DeleteOnlyDocumento(objArch.Id);

                        //Guardar id archivos temporalmente recien creados
                        ExtNet.Js.Call("AppUser.DocumentosGrid.AddIdsNewOk", e.ExtraParams["Id"], objArch.Ruta);
                    }
                    else
                    {
                        objArch = Archivo.NewEditableRoot(Valores.Modulo_Archivo_Promotor);
                        objArch.Id = System.Guid.NewGuid();
                        objArch.RequiereFirmar = "N";
                        objArch.Firmado = "N";
                        objArch.TipoDocumento = e.ExtraParams["Id"];
                        if (IdPageSession != SessionPage.PageUserReg)
                               objArch.PersonaId = GetSessionUsuario.PersonaId;
                        objArch.Version = version;
                        objArch.RequiereFirmar = "N";
                        objArch.Ruta = ruta;
                        objArch.SubirNuevo = "N";

                        //Guardar id archivos temporalmente recien creados
                        ExtNet.Js.Call("AppUser.DocumentosGrid.AddIdsNew", e.ExtraParams["Id"], objArch.Ruta);
                    }

                    objArch.Nombre = e.ExtraParams["txtNombre"];
                    objArch.Descripcion = e.ExtraParams["txtDesp"];
                    objArch.FechaCreacion = DateTime.Now;

                    objArch.Save();

                    CountNumLoadDoc += 1;
                    //numDoc.Text = CountNumLoadDoc.ToString();

                    UpdateRowClient(e.ExtraParams["Id"], index, objArch);
                    X.Msg.Show(new MessageBoxConfig
                    {
                        Buttons = MessageBox.Button.OK,
                        Icon = MessageBox.Icon.INFO,
                        Title = Titulos.TituloAviso,
                        Message = string.Format(tpl, FileUploadDocUp.PostedFile.FileName)
                    });
                }
                else
                {
                    X.Msg.Show(new MessageBoxConfig
                    {
                        Buttons = MessageBox.Button.OK,
                        Icon = MessageBox.Icon.ERROR,
                        Title = Titulos.TituloAviso,
                        Message = Mensajes.MensajeArchivoIncorrecto
                    });

                }

                winDocumento.Hide();
            }
            catch (Exception ex)
            {
                RegistrarLog(ex);
                X.Msg.Show(new MessageBoxConfig
                {
                    Buttons = MessageBox.Button.OK,
                    Icon = MessageBox.Icon.ERROR,
                    Title = Titulos.TituloAviso,
                    Message = Mensajes.MensajeArchivoIncorrecto
                });
            }
        }
        #region Eliminacio de documentos de promotor
        [DirectMethod(ShowMask = true)]
        public Boolean DeleteDocumento(Guid idArch)
        {
            try{
                    Archivo objArch = Archivo.GetEditableRoot(idArch, Valores.Modulo_Archivo_Promotor);
                    DeleteFile(objArch.Ruta);
                    objArch.Delete();
                    objArch.Save();
                    stoDocRequerimiento.DataSource = ListaDoc;
                    stoDocRequerimiento.DataBind();
                }
                catch (Exception ex)
                {
                    RegistrarLog(ex);
                }
                return (true);
        }
      
        /// <summary>
        /// Eliminar solamente archivos asociados
        /// </summary>
        /// <param name="idArch"></param>
        /// <returns></returns>
        public Boolean DeleteOnlyDocumento(Guid idArch)
        {
            try{

            Archivo objArch = Archivo.GetEditableRoot(idArch, Valores.Modulo_Archivo_Promotor);
            DeleteFile(objArch.Ruta);
            }
            catch (Exception ex)
            {
                RegistrarLog(ex);
            }
            return (true);
        }
        protected void DeleteDocumento(Guid idArch, string idDoc)
        {

            try{
            Archivo objArch = Archivo.GetEditableRoot(idArch, Valores.Modulo_Archivo_Promotor);
            DeleteFile(objArch.Ruta);
            if (GetSessionPage.GetSession(IdPageSession) != Valores.PageEvento_Lectura)
            {
                objArch.Delete();
            }
            objArch.Save();
            CountNumLoadDoc -= 1;
            //numDoc.Text = CountNumLoadDoc.ToString();

            if (GetSessionPage.GetSession(IdPageSession) != Valores.PageEvento_Lectura)
            {
                ExtNet.Js.Call("AppUser.DocumentosGrid.DelIdsNew", idDoc, objArch.Ruta);
                stoDocRequerimiento.DataSource = ListaDoc;
                stoDocRequerimiento.DataBind();
            }
            else
            {
                ExtNet.Js.Call("AppUser.DocumentosGrid.DelIdsNewOk", idDoc, objArch.Ruta);
                BindDataDocumentos(PersonaIdTmp);
            }
            }
            catch (Exception ex)
            {
                RegistrarLog(ex);
            }
        }
        [DirectMethod(IDAlias = "wucDocUser", ShowMask = true)]
        public Boolean DeleteFiles()
        {
            try{
            DeleteAllFiles(ListaDoc);
            CountNumLoadDoc = 0;
            //numDoc.Text = CountNumLoadDoc.ToString();
            }
            catch (Exception ex)
            {
                RegistrarLog(ex);
            }
            return (true);


        }

        private void DeleteAllFiles(ItemLista list)
        {
            try
            {
            foreach (var item in list)
            {
                if (item.ArchivoId != null && item.ArchivoId != "")
                {
                    var id = Guid.Parse(item.ArchivoId);
                    DeleteDocumento(id, item.Id.ToString());
                }
            }
            }
            catch (Exception ex)
            {
                RegistrarLog(ex);
            }
        }
        public void DeleteAllFiles(ArchivoLista list)
        {
            try
            {
            foreach (var item in list)
            {
                if (item.ArchivoId != null && item.ArchivoId.ToString() != "")
                {
                    var id = item.ArchivoId;
                    DeleteDocumento(id, item.Id.ToString());
                }
            }
            }
            catch (Exception ex)
            {
                RegistrarLog(ex);
            }
        }
        protected void btnDocUpEliminar_Click(object sender, DirectEventArgs e)
        {
            try
            {
                var id = Guid.Parse(e.ExtraParams["hddArchDelId"]);
                DeleteDocumento(id, e.ExtraParams["Id"]);

            }
            catch (Exception ex)
            {
                RegistrarLog(ex);
            }
        }
      
        private void DeleteFile(string file)
        {
            var path = Server.MapPath(file);
            if (System.IO.File.Exists(path))
                File.Delete(path);
        }
        #endregion

    }
}